1. Field of the Invention
The present invention relates generally to an improved data processing system, and in particular to a computer implemented method, data processing system, and computer program product for overriding potential competing algorithms within transport layers of device drivers.
2. Description of the Related Art
An operating system comprises software that manages the sharing of resources of a computer and enables software applications to interact with the computer hardware, such as by writing data to a disk (e.g., a hard disk drive). A basic concept in today's operating systems is that in order for data to be moved to a target destination, there are multiple transport layers of device drivers that data must pass through before the data reaches its intended destination. These transport layers are a product of modular programming, which is a key aspect in programming philosophy. Modular programming is used to compose computer programs into separate modules. By using separate modules in this manner, different transport layers can be rotated in and out of the operating system as needed with minimal disruption to the operating system.
One unintended consequence of the modular programming used to implement the multiple transport layers of device drivers in the operating system is that certain actions in one transport layer may be unnecessarily repeated in another transport layer of the path, thereby wasting system resources on a redundant action. Even worse, one transport layer may have a contradictory behavior with the behavior of another transport layer of the path. For instance, some of the transport layers in the data path have embedded optimization algorithms used to enhance system performance and data availability. Some examples of optimization algorithms include various data sorting routines, such as ‘elevator’, ‘closest head’, ‘least busy’, etc. The elevator algorithm obtains different data requests from different sources (such as many people getting on the same elevator and needing to go to different floors) and sorts the data requests into a directional order of traversal, regardless of which order the requests arrived. The disk arm goes across the disk platter in an ascending or descending order (like an elevator going up or down) and picks up the data requests in one smooth action. The closest head algorithm sorts the data so that the request that is processed first is the request which is closest to the data head or arm on the disk drive. This algorithm discounts the order the requests were received. The least busy algorithm is used for mirrored data situations in which there are two (or more) copies of the same data. With the least busy algorithm, a data request is sent to the disk drive which has the fewest number of jobs in its queue.
The optimization algorithms in the layers of a data path may be developed by different programmers or company. For instance, it is possible that one layer of device driver may perform the closest head optimization routine for sorting data. When this layer passes the data to the next layer in the path, the next layer, written by a different programmer or company, may perform the elevator optimization routine for sorting data. Thus, the next layer of device driver in the path may invalidate the sorting algorithm performed by the previous layer. Similarly, system resources may be wasted due to repetition of actions in the data path. For example, two layers of device drivers may perform the same elevator optimization algorithm. In this case, a double-sort of the same data has occurred when one of the layers has wasted a cycle of data optimization that did not need to be performed.